Systems and methods for displaying notifications received from multiple applications

ABSTRACT

Systems and methods are disclosed for displaying notifications received from multiple applications. In some embodiments, an electronic device can monitor notifications that are received from the multiple applications. Responsive to receiving the notifications, the electronic device can control the manner in which the notifications are displayed while the device is operating in a locked or an unlocked state. In some embodiments, the electronic device can allow users to customize how notifications are to be displayed while the device is in the locked and/or unlocked states.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional PatentApplication No. 61/493,470, filed Jun. 5, 2011, the disclosure of whichis incorporated by reference herein in its entirety.

FIELD OF THE INVENTION

The disclosed embodiments relate generally to electronic devices, andmore particularly, to electronic devices displaying notificationsreceived from multiple applications.

Background of the Disclosure

Today's portable electronic devices are able to integrate multiplefunctionalities. These devices are capable of running multipleapplications. In particular, some of these applications may generatetrigger events that can result in the display of a notification.

Because electronic devices can contain many applications, the potentialfor application-based notifications can become numerous and unwieldy,particularly if a user is required to access each applicationindividually in order to view application-specific notifications.Accordingly, what is needed is a more efficient and intuitive approachfor organizing notifications and providing users with instant access tothese notifications.

SUMMARY OF THE DISCLOSURE

Systems and methods are disclosed for displaying notifications receivedfrom multiple applications. An electronic device can have atouch-sensitive input/output (“I/O”) device (e.g., a touch screen) witha graphical user interface (“GUI”), one or more processors, memory, andone or more modules, programs, or sets of instructions stored in thememory for performing multiple functions.

In particular, the electronic device can include a notification modulethat can interface with one or more Application Programming Interfaces(“APIs”) to generate various types of notifications while the device isin either a locked state or an unlocked state. Furthermore, thenotification module can provide options for customizing notificationsettings.

In some embodiments, the notification module can monitor notificationsthat are received from multiple applications. Responsive to receivingthe notifications, the notification module can control the manner inwhich the notifications are displayed while the electronic device isoperating in a locked or an unlocked state. In some embodiments, theelectronic device can allow a user to customize how notifications aredisplayed while the device is in the locked and/or the unlocked state.

In some embodiments, while the device is operating in a locked state,the notification module can display a pull-down option, which can allowa user to view previously received notifications. In some embodiments,the notification module can aggregate the notifications that arereceived, and can provide the aggregated notifications as multiple panesin a notification center. Thus, each pane of the notification center canbe associated with a different application. In addition, thenotification module can display banners that correspond to one or morenotifications that are received from different applications.

The one or more APIs that interface with the notification module can bein an environment with calling program code interacting with anotherprogram code being called through the one or more interfaces. Variousfunction calls, messages or other types of invocations, which furthermay include various kinds of parameters, can be transferred via the APIsbetween the calling program and the code being called. In addition, anAPI may provide the calling program code the ability to use data typesor classes defined in the API and implemented in the called programcode.

At least certain embodiments include an environment with a callingsoftware component interacting with a called software component throughan API. A method for operating through an API in this environmentincludes transferring one or more function calls, messages, and/or othertypes of invocations or parameters via the API.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other aspects and advantages of the invention will becomemore apparent upon consideration of the following detailed description,taken in conjunction with accompanying drawings, in which like referencecharacters refer to like parts throughout, and in which:

FIGS. 1 and 2 are block diagrams of electronic devices configured inaccordance with various embodiments of the invention;

FIGS. 3 and 4 are block diagrams of application programming interface(“API”) architectures in accordance with various embodiments of theinvention;

FIG. 5 is a display screen associated with a home screen of anelectronic device in accordance with various embodiments of theinvention;

FIGS. 6A-6E are display screens associated with an illustrativenotification center in accordance with various embodiments of theinvention;

FIGS. 6F-6H are display screens associated with an illustrativenotification center in accordance with various embodiments of theinvention;

FIGS. 7A-7E are display screens associated with illustrative banners inaccordance with various embodiments of the invention;

FIGS. 8A-8F are display screens associated with displaying notificationswhile an electronic device is operating in a locked state in accordancewith various embodiments of the invention;

FIGS. 9A-9F are display screens associated with customizing notificationsettings in accordance with various embodiments of the invention;

FIGS. 10A-10C are display screens associated with notifications inaccordance with various embodiments of the invention;

FIG. 11 is a flowchart of an illustrative process for displaying apull-down option in response to receiving multiple notifications inaccordance with various embodiments of the invention;

FIG. 12 is a flowchart of an illustrative process for displaying anotification center in accordance with various embodiments of theinvention;

FIG. 13 is a flowchart of an illustrative process for providing a bannerin accordance with various embodiments of the invention; and

FIG. 14 is a flowchart of an illustrative process for providingnotification settings in accordance with various embodiments of theinvention.

DETAILED DESCRIPTION OF THE DISCLOSURE

Systems and methods for displaying notifications received from multipleapplications are provided.

FIG. 1 illustrates a block diagram of electronic device 100 thatincludes touch I/O device 102 that can receive touch input forinteracting with computing system 104 via wired or wirelesscommunication channel 106. Touch I/O device 102 may be used to provideuser input to computing system 104 in lieu of or in combination withother input devices such as a keyboard, mouse, etc. One or more touchI/O devices 102 may be used for providing user input to computing system104. Touch I/O device 102 may be an integral part of computing system104 (e.g., touch screen on a laptop) or may be separate from computingsystem 104.

Touch I/O device 102 may include a touch sensitive panel which is whollyor partially transparent, semitransparent, non-transparent, opaque orany combination thereof. Touch I/O device 102 may be embodied as a touchscreen, touch pad, a touch screen functioning as a touch pad (e.g., atouch screen replacing the touchpad of a laptop), a touch screen ortouchpad combined or incorporated with any other input device (e.g., atouch screen or touchpad disposed on a keyboard) or anymulti-dimensional object having a touch sensitive surface for receivingtouch input.

In one example, touch I/O device 102 embodied as a touch screen mayinclude a transparent and/or semitransparent touch sensitive panelpartially or wholly positioned over at least a portion of a display.According to this embodiment, touch I/O device 102 functions to displaygraphical data transmitted from computing system 104 (and/or anothersource) and also functions to receive user input. In other embodiments,touch I/O device 102 may be embodied as an integrated touch screen wheretouch sensitive components/devices are integral with displaycomponents/devices. In still other embodiments, a touch screen may beused as a supplemental or additional display screen for displayingsupplemental or the same graphical data as a primary display and toreceive touch input.

Touch I/O device 102 may be configured to detect the location of one ormore touches or near touches on device 102 based on capacitive,resistive, optical, acoustic, inductive, mechanical, chemicalmeasurements, or any phenomena that can be measured with respect to theoccurrences of the one or more touches or near touches in proximity todevice 102. Software, hardware, firmware or any combination thereof maybe used to process the measurements of the detected touches to identifyand track one or more gestures. A gesture may correspond to stationaryor non-stationary, single or multiple, touches or near touches on touchI/O device 102. A gesture may be performed by moving one or more fingersor other objects in a particular manner on touch I/O device 102 such astapping, pressing, rocking, scrubbing, twisting, changing orientation,pressing with varying pressure and the like at essentially the sametime, contiguously, or consecutively. A gesture may be characterized by,but is not limited to a pinching, sliding, swiping, rotating, flexing,dragging, or tapping motion between or with any other finger or fingers.A single gesture may be performed with one or more hands, by one or moreusers, or any combination thereof.

Computing system 104 may drive a display with graphical data to displaya graphical user interface (GUI). The GUI may be configured to receivetouch input via touch I/O device 102. Embodied as a touch screen, touchI/O device 102 may display the GUI. Alternatively, the GUI may bedisplayed on a display separate from touch I/O device 102. The GUI mayinclude graphical elements displayed at particular locations within theinterface. Graphical elements may include but are not limited to avariety of displayed virtual input devices including virtual scrollwheels, a virtual keyboard, virtual knobs, virtual buttons, any virtualUI, and the like. A user may perform gestures at one or more particularlocations on touch I/O device 102 that may be associated with thegraphical elements of the GUI. In other embodiments, the user mayperform gestures at one or more locations that are independent of thelocations of graphical elements of the GUI. Gestures performed on touchI/O device 102 may directly or indirectly manipulate, control, modify,move, actuate, initiate or generally affect graphical elements such ascursors, icons, media files, lists, text, all or portions of images, orthe like within the GUI. For instance, in the case of a touch screen, auser may directly interact with a graphical element by performing agesture over the graphical element on the touch screen. Alternatively, atouch pad generally provides indirect interaction. Gestures may alsoaffect non-displayed GUI elements (e.g., causing user interfaces toappear) or may affect other actions within computing system 104 (e.g.,affect a state or mode of a GUI, application, or operating system).Gestures may or may not be performed on touch I/O device 102 inconjunction with a displayed cursor. For instance, in the case in whichgestures are performed on a touchpad, a cursor (or pointer) may bedisplayed on a display screen or touch screen and the cursor may becontrolled via touch input on the touchpad to interact with graphicalobjects on the display screen. In other embodiments in which gesturesare performed directly on a touch screen, a user may interact directlywith objects on the touch screen, with or without a cursor or pointerbeing displayed on the touch screen.

Feedback may be provided to the user via communication channel 106 inresponse to or based on the touch or near touches on touch I/O device102. Feedback may be transmitted optically, mechanically, electrically,olfactory, acoustically, or the like or any combination thereof and in avariable or non-variable manner.

Attention is now directed towards embodiments of a system architecturethat may be embodied within any portable or non-portable deviceincluding but not limited to a communication device (e.g. mobile phone,smart phone), a multi-media device (e.g., MP3 player, TV, radio), aportable or handheld computer (e.g., tablet, netbook, laptop), a desktopcomputer, an All-In-One desktop, a peripheral device, or any othersystem or device adaptable to the inclusion of system architecture 2000,including combinations of two or more of these types of devices. FIG. 2is a block diagram of one embodiment of system 200 that can include oneor more computer-readable mediums 201, processing system 204,input/Output (I/O) subsystem 206, radio frequency (RF) circuitry 208,and audio circuitry 210. These components may be coupled by one or morecommunication buses or signal lines 203. System 200 can be the same asor similar to electronic device 100 (FIG. 1).

It should be apparent that the architecture shown in FIG. 2 is only oneexample architecture of system 200, and that system 200 could have moreor fewer components than shown, or a different configuration ofcomponents. The various components shown in FIG. 2 can be implemented inhardware, software, firmware or any combination thereof, including oneor more signal processing and/or application specific integratedcircuits.

RF circuitry 208 is used to send and receive information over a wirelesslink or network to one or more other devices and includes well-knowncircuitry for performing this function. RF circuitry 208 and audiocircuitry 210 can be coupled to processing system 204 via peripheralsinterface 216. Interface 216 can include various known components forestablishing and maintaining communication between peripherals andprocessing system 204. Audio circuitry 210 can be coupled to audiospeaker 250 and microphone 252 and includes known circuitry forprocessing voice signals received from interface 216 to enable a user tocommunicate in real-time with other users. In some embodiments, audiocircuitry 210 includes a headphone jack (not shown).

Peripherals interface 216 can couple the input and output peripherals ofthe system to processor 218 and computer-readable medium 201. One ormore processors 218 can communicate with one or more computer-readablemediums 201 via controller 220. Computer-readable medium 201 can be anydevice or medium that can store code and/or data for use by one or moreprocessors 218. Medium 201 can include a memory hierarchy, including butnot limited to cache, main memory and secondary memory. The memoryhierarchy can be implemented using any combination of RAM (e.g., SRAM,DRAM, DDRAM), ROM, FLASH, magnetic and/or optical storage devices, suchas disk drives, magnetic tape, CDs (compact disks) and DVDs (digitalvideo discs). Medium 201 may also include a transmission medium forcarrying information-bearing signals indicative of computer instructionsor data (with or without a carrier wave upon which the signals aremodulated). For example, the transmission medium may include acommunications network, including but not limited to the Internet (alsoreferred to as the World Wide Web), intranet(s), Local Area Networks(LANs), Wide Local Area Networks (WLANs), Storage Area Networks (SANs),Metropolitan Area Networks (MAN) and the like.

One or more processors 218 can run various software components stored inmedium 201 to perform various functions for system 200. In someembodiments, the software components include operating system 222,communication module (or set of instructions) 224, touch processingmodule (or set of instructions) 226, graphics module (or set ofinstructions) 228, one or more applications (or set of instructions)230, and notification module 238. Each of these modules and above notedapplications correspond to a set of instructions for performing one ormore functions described above and the methods described in thisapplication (e.g., the computer-implemented methods and otherinformation processing methods described herein). These modules (e.g.,sets of instructions) need not be implemented as separate softwareprograms, procedures or modules, and thus various subsets of thesemodules may be combined or otherwise rearranged in various embodiments.In some embodiments, medium 201 may store a subset of the modules anddata structures identified above. Furthermore, medium 201 may storeadditional modules and data structures not described above.

Operating system 222 can include various procedures, sets ofinstructions, software components and/or drivers for controlling andmanaging general system tasks (e.g., memory management, storage devicecontrol, power management, etc.) and facilitates communication betweenvarious hardware and software components.

Communication module 224 facilitates communication with other devicesover one or more external ports 236 or via RF circuitry 208 and includesvarious software components for handling data received from RF circuitry208 and/or external port 236.

Graphics module 228 can include various known software components forrendering, animating and displaying graphical objects on a displaysurface. In embodiments in which touch I/O device 212 is a touchsensitive display (e.g., touch screen), graphics module 2028 includescomponents for rendering, displaying, and animating objects on the touchsensitive display.

One or more applications 230 can include any applications installed onsystem 200, including without limitation, a browser, address book,contact list, email, instant messaging, word processing, keyboardemulation, widgets, JAVA-enabled applications, encryption, digitalrights management, voice recognition, voice replication, locationdetermination capability (such as that provided by the globalpositioning system (GPS)), a music player, etc.

Touch processing module 226 includes various software components forperforming various tasks associated with touch I/O device 212 includingbut not limited to receiving and processing touch input received fromI/O device 212 via touch I/O device controller 232. For example, touchprocessing module 226 can also include software components forperforming tasks associated with other I/O devices 214. That is, touchprocessing module 226 can receive and process inputs received from I/Odevice 214 via other I/O controller 234.

System 200 may further include notification module 238 for performingthe method/functions as described herein in connection with FIGS. 5-14.Notification module 238 may at least function to monitor notificationsthat are received from multiple applications (e.g., multipleapplications on system 200 or data providers that are transmitting datato system 200). For example, notification module 238 can receivenotifications from both non-third party applications and third partyapplications. In addition, notification module 238 can receivepush-based notifications, trigger-based notifications, and/or othertypes of personal notifications.

Responsive to receiving the notifications, notification module 238 cancontrol the manner in which the notifications are displayed while system200 is operating in a locked state or an unlocked state. For example,while system 200 is operating in a locked state, notification module 238can display notifications in a banner, and control the manner in whichthese notifications are displayed. As another example, notificationmodule 238 can aggregate notifications that are received, and canprovide the aggregated notifications as multiple panes in a notificationcenter. Thus, each pane can be associated with a different application.In some embodiments, notification module 238 can allow a user tocustomize how notifications are displayed on system 200.

In a locked state, system 200 may limit user access to certain features.For example, in a locked state, the user may not be able to activatevarious device features, such as placing a telephone call, or enteringen email. In other words, the locked state is meant to preventinadvertent access to system 200. When system 200 is an unlocked state,the user has full access to all features of the system.

Moreover, notification module 238 can provide a specific type of dataformatting to data providers, which can then allow the data providers todirect particular notifications to various users. Persons skilled in theart will appreciate that any suitable type of formatting may also beused. For example, in order to display a notification on system 200,notification module 238 can require a data provider to specify the title(e.g., name of user), the subtitle (e.g., the subtitle of an incomingmessage or alert), and the body (e.g., body of the message).

Notification module 238 may also interface with touch processing module226 in order to receive user inputs. In addition, notification module238 can interface with graphics module 228 in order to display variousgraphical objects on a display. Notification module 238 may be embodiedas hardware, software, firmware, or any combination thereof. Althoughnotification module 238 is shown to reside within medium 201, all orportions of module 238 may be embodied within other components withinsystem 200 or may be wholly embodied as a separate component withinsystem 200.

I/O subsystem 206 is coupled to touch I/O device 212 and one or moreother I/O devices 214 for controlling or performing various functions.Touch I/O device 212 communicates with processing system 204 via touchI/O device controller 232, which includes various components forprocessing user touch input (e.g., scanning hardware). One or more otherinput controllers 234 receives/sends electrical signals from/to otherI/O devices 214. Other I/O devices 214 may include physical buttons,dials, slider switches, sticks, keyboards, touch pads, additionaldisplay screens, or any combination thereof.

If embodied as a touch screen, touch I/O device 212 displays visualoutput to the user in a GUI. The visual output may include text,graphics, video, and any combination thereof. Some or all of the visualoutput may correspond to user-interface objects. Touch I/O device 212forms a touch-sensitive surface that accepts touch input from the user.Touch I/O device 212 and touch screen controller 232 (along with anyassociated modules and/or sets of instructions in medium 201) detectsand tracks touches or near touches (and any movement or release of thetouch) on touch I/O device 212 and converts the detected touch inputinto interaction with graphical objects, such as one or moreuser-interface objects. In the case in which device 212 is embodied as atouch screen, the user can directly interact with graphical objects thatare displayed on the touch screen. Alternatively, in the case in whichdevice 212 is embodied as a touch device other than a touch screen(e.g., a touch pad), the user may indirectly interact with graphicalobjects that are displayed on a separate display screen embodied as I/Odevice 214.

Touch I/O device 212 may be analogous to the multi-touch sensitivesurface described in the following U.S. Pat. Nos. 6,323,846 (Westermanet al.), 6,570,557 (Westerman et al.), and/or 6,677,932 (Westerman),and/or U.S. Patent Publication 2002/0015024A1, each of which is herebyincorporated by reference.

Embodiments in which touch I/O device 212 is a touch screen, the touchscreen may use LCD (liquid crystal display) technology, LPD (lightemitting polymer display) technology, OLED (organic LED), or OEL(organic electro luminescence), although other display technologies maybe used in other embodiments.

Feedback may be provided by touch I/O device 212 based on the user'stouch input as well as a state or states of what is being displayedand/or of the computing system. Feedback may be transmitted optically(e.g., light signal or displayed image), mechanically (e.g., hapticfeedback, touch feedback, force feedback, or the like), electrically(e.g., electrical stimulation), olfactory, acoustically (e.g., beep orthe like), or the like or any combination thereof and in a variable ornon-variable manner.

System 200 can also include power system 244 for powering the varioushardware components and may include a power management system, one ormore power sources, a recharging system, a power failure detectioncircuit, a power converter or inverter, a power status indicator and anyother components typically associated with the generation, managementand distribution of power in portable devices.

In some embodiments, peripherals interface 216, one or more processors218, and memory controller 220 may be implemented on a single chip, suchas processing system 204. In some other embodiments, they may beimplemented on separate chips.

Notification module 238 can interface with one or more ApplicationProgramming Interfaces (“APIs”) to provide a notification center thatcan generate various types of notifications when system 200 is in eithera locked state or an unlocked state. Furthermore, notification module238 can provide multiple settings for customizing the notificationcenter.

An API is an interface implemented by a program code component orhardware component (hereinafter “API-implementing component”) thatallows a different program code component or hardware component(hereinafter “API-calling component”) to access and use one or morefunctions, methods, procedures, data structures, classes, and/or otherservices provided by the API-implementing component. An API can defineone or more parameters that are passed between the API-calling componentand the API-implementing component.

An API allows a developer of an API-calling component (which may be athird party developer) to leverage specified features provided by anAPI-implementing component. There may be one API-calling component orthere may be more than one such component. An API can be a source codeinterface that a computer system or program library provides in order tosupport requests for services from an application. An operating system(OS) can have multiple APIs to allow applications running on the OS tocall one or more of those APIs, and a service (such as a programlibrary) can have multiple APIs to allow an application that uses theservice to call one or more of those APIs. An API can be specified interms of a programming language that can be interpreted or compiled whenan application is built.

In some embodiments the API-implementing component may provide more thanone API, each providing a different view of or with different aspectsthat access different aspects of the functionality implemented by theAPI-implementing component. For example, one API of an API-implementingcomponent can provide a first set of functions and can be exposed tothird party developers, and another API of the API-implementingcomponent can be hidden (not exposed) and provide a subset of the firstset of functions and also provide another set of functions, such astesting or debugging functions which are not in the first set offunctions. In other embodiments, the API-implementing component mayitself call one or more other components via an underlying API and thusbe both an API-calling component and an API-implementing component.

An API defines the language and parameters that API-calling componentsuse when accessing and using specified features of the API-implementingcomponent. For example, an API-calling component accesses the specifiedfeatures of the API-implementing component through one or more API callsor invocations (embodied for example by function or method calls)exposed by the API and passes data and control information usingparameters via the API calls or invocations. The API-implementingcomponent may return a value through the API in response to an API callfrom an API-calling component. While the API defines the syntax andresult of an API call (e.g., how to invoke the API call and what the APIcall does), the API may not reveal how the API call accomplishes thefunction specified by the API call. Various API calls are transferredvia the one or more application programming interfaces between thecalling (API-calling component) and an API-implementing component.Transferring the API calls may include issuing, initiating, invoking,calling, receiving, returning, or responding to the function calls ormessages; in other words, transferring can describe actions by either ofthe API-calling component or the API-implementing component. Thefunction calls or other invocations of the API may send or receive oneor more parameters through a parameter list or other structure. Aparameter can be a constant, key, data structure, object, object class,variable, data type, pointer, array, list or a pointer to a function ormethod or another way to reference a data or other item to be passed viathe API.

Furthermore, data types or classes may be provided by the API andimplemented by the API-implementing component. Thus, the API-callingcomponent may declare variables, use pointers to, use or instantiateconstant values of such types or classes by using definitions providedin the API.

Generally, an API can be used to access a service or data provided bythe API-implementing component or to initiate performance of anoperation or computation provided by the API-implementing component. Byway of example, the API-implementing component and the API-callingcomponent may each be any one of an operating system, a library, adevice driver, an API, an application program, or other module (itshould be understood that the API-implementing component and theAPI-calling component may be the same or different type of module fromeach other). API-implementing components may in some cases be embodiedat least in part in firmware, microcode, or other hardware logic. Insome embodiments, an API may allow a client program to use the servicesprovided by a Software Development Kit (SDK) library. In otherembodiments, an application or other client program may use an APIprovided by an Application Framework. In these embodiments, theapplication or client program may incorporate calls to functions ormethods provided by the SDK and provided by the API or use data types orobjects defined in the SDK and provided by the API. An ApplicationFramework may in these embodiments provide a main event loop for aprogram that responds to various events defined by the Framework. TheAPI allows the application to specify the events and the responses tothe events using the Application Framework. In some implementations, anAPI call can report to an application the capabilities or state of ahardware device, including those related to aspects such as inputcapabilities and state, output capabilities and state, processingcapability, power state, storage capacity and state, communicationscapability, etc., and the API may be implemented in part by firmware,microcode, or other low level logic that executes in part on thehardware component.

The API-calling component may be a local component (e.g., on the samedata processing system as the API-implementing component) or a remotecomponent (e.g., on a different data processing system from theAPI-implementing component) that communicates with the API-implementingcomponent through the API over a network. It should be understood thatan API-implementing component may also act as an API-calling component(e.g., it may make API calls to an API exposed by a differentAPI-implementing component), and an API-calling component may also actas an API-implementing component by implementing an API that is exposedto a different API-calling component.

The API may allow multiple API-calling components written in differentprogramming languages to communicate with the API-implementing component(thus the API may include features for translating calls and returnsbetween the API-implementing component and the API-calling component);however the API may be implemented in terms of a specific programminglanguage. An API-calling component can, in one embedment, call APIs fromdifferent providers such as a set of APIs from an OS provider andanother set of APIs from a plug-in provider and another set of APIs fromanother provider (e.g. the provider of a software library) or creator ofthe another set of APIs.

FIG. 3 is a block diagram illustrating an exemplary API architecture300, which may be used in some embodiments of the invention. As shown inFIG. 3, the API architecture 300 includes the API-implementing component302 (e.g., an operating system, a library, a device driver, an API, anapplication program, software or other module) that implements the API304. API 304 specifies one or more functions, methods, classes, objects,protocols, data structures, formats and/or other features ofAPI-implementing component 302 that may be used by API-calling component306. API 304 can specify at least one calling convention that specifieshow a function in API-implementing component 302 receives parametersfrom API-calling component 306 and how the function returns a result toAPI-calling component 306. API-calling component 306 (e.g., an operatingsystem, a library, a device driver, an API, an application program,software or other module), makes API calls through API 304 to access anduse the features of the API-implementing component 302 that arespecified by API 304. API-implementing component 302 may return a valuethrough API 304 to API-calling component 306 in response to an API call.

It will be appreciated that API-implementing component 302 may includeadditional functions, methods, classes, data structures, and/or otherfeatures that are not specified through API 304 and are not available toAPI-calling component 306. It should be understood that API-callingcomponent 306 may be on the same system as API-implementing component302 or may be located remotely and accesses API-implementing component302 using API 304 over a network. While FIG. 3 illustrates a singleAPI-calling component 306 interacting with API 304, it should beunderstood that other API-calling components, which may be written indifferent languages (or the same language) than API-calling component306, may use API 304.

API-implementing component 302, API 304, and API-calling component 306may be stored in a machine-readable medium, which includes any mechanismfor storing information in a form readable by a machine (e.g., acomputer or other data processing system). For example, amachine-readable medium includes magnetic disks, optical disks, randomaccess memory; read only memory, flash memory devices, etc.

In FIG. 4 (“Software Stack”), an exemplary embodiment, applications canmake calls to Services A or B using several Service APIs and toOperating System (OS) using several OS APIs. Services A and B can makecalls to OS using several OS APIs.

Note that the Service 2 has two APIs, one of which (Service 2 API 1)receives calls from and returns values to Application 1 and the other(Service 2 API 2) receives calls from and returns values to Application2. Service 1 (which can be, for example, a software library) makes callsto and receives returned values from OS API 1, and Service 2 (which canbe, for example, a software library) makes calls to and receivesreturned values from both OS API 1 and OS API 2. Application 2 makescalls to and receives returned values from OS API 2.

As discussed above, a notification module of an electronic device (e.g.,notification module 238 of FIG. 2) can control the manner in whichnotifications are received from applications and then provided to auser. For example, the notification module can aggregate notificationsthat are received from different applications, and can provide theaggregated notifications as a series of panes (or listings) in anotification center. Accordingly, by accessing the notification center,the user can view a listing of recently received notifications. In somecases, the notification center may only be accessible while theelectronic device is operating in an unlocked state.

Any suitable approach may be used to invoke the notification center. Forexample, a user may invoke the notification center by pressing a buttonon an electronic device. As another example, when an electronic device(e.g., electronic device 100 of FIG. 1 or system 200 of FIG. 2) is adevice where operation of a predefined set of functions on the device isperformed through a touch screen and/or a touchpad (e.g., touch I/Odevice 212), a user can invoke the notification center by making acontact or by touching graphics on a touch screen.

For instance, referring now to FIG. 5, display screen 500 is shown of ahome screen of an electronic device. Display screen 500 can be the sameas or can interface with touch I/O device 212 of FIG. 2. Display screen500 can include multiple selectable icons 502.

The notification module may be configured to accept multiple gesturesfor invoking the notification center. For example, a user can perform agross swipe gesture by quickly flicking one or more fingers in adownward motion from the top of screen 500. As another example, the usercan slowly drag one or more fingers downwards from the top of screen500.

The notification module can detect the swipe or drag by the user in aparticular region of screen 500 (e.g., a twenty-pixel region at the topof screen 500). In particular, once the notification module detects thatthere is movement in multiple pixels in the twenty-pixel region, thenotification module can begin to display the notification center.

In some embodiments, the notification module can display thenotification center in the same manner regardless of the way in whichthe user invokes the notification center. In other embodiments, thenotification module can respond differently depending on the gesturesmade by user. For example, if the user performed a gross swipe gesture,the notification module can immediately pull down the notificationcenter to the bottom of screen 500. If the user instead slowly drags oneor more fingers downwards, the notification module may pull down thenotification center on screen 500 in real-time.

In some cases, a visual indication may be displayed on the top ofdisplay screen 500 to indicate the presence of a notification center. Inother embodiments (and as shown in display screen 500), there may be novisual indication of the presence of a notification center. As such, theuser can avoid being distracted while using the electronic device andvaluable space on the screen can be conserved.

Persons skilled in the art will appreciate that instead of the top ofdisplay screen 500, the notification center can be accessed from anysuitable portion of display screen 500 (e.g., right, left, or bottom ofdisplay screen 500). In addition, the notification module may allow auser to specify which portion of display screen 500 to use for invokingthe notification center.

Persons skilled in the art will also appreciate that although FIG. 5shows a home screen, the notification center can be invoked at anysuitable time. In particular, the notification center may also beinvoked while the device is displaying a particular application.

Turning now to FIGS. 6A-6E, display screens are shown of a notificationcenter on an electronic device. Persons skilled in the art willappreciate that although notification center is displayed in FIGS. 6A-6Ewhile the electronic device is operating in a portrait mode, thenotification center can also be displayed while the electronic device isoperating in a landscape mode.

Turning first to FIG. 6A, responsive to a user dragging one or morefingers downwards from the top of display screen 600, a notificationmodule can pull down notification center 602 towards the bottom ofdisplay screen 600. Notification center 602 can include tab 604 at abottom portion of notification center 602.

In some cases, in order to remove notification center 602 from displayscreen 600, the user may need to drag notification center 602 up and offof display screen 600. Persons skilled in the art will appreciate thatany other suitable approach may be used to remove notification center602 from display screen 600 (e.g., by pressing a home or an on/offbutton).

Turning next to FIG. 6B, display screen 606 shows notification center602 being pulled all the way to the bottom of screen 606. Notificationcenter 602 can include one or more panes, where each pane can include awidget representing a different application on the electronic device.For example, notification center 602 can include weather pane 608, stockpane 610, social network pane 612, and mail pane 614.

Notification center 602 can be scrollable, such that a user can contactand drag notification center 602 up and down in order to view fewer oradditional notifications. In some embodiments, only certain portions ofnotification center 602 can be made scrollable. As a result, one or morepanes may remain fixed (e.g., weather pane 608 and stock pane 612),whereas other panes may be scrollable.

Weather pane 608 can display the weather for the current location of theelectronic device. Alternatively, weather pane 608 can display theweather for any default location that a user has specified. The user maytouch weather pane 608 to open the weather application on the device. Inaddition, the user may swipe weather pane 608 left or right in order toview weather for other cities.

Stock pane 610 can include a scrollable stock ticker that scrolls, forexample, from right to left independent of any user interaction. Theuser may be able to drag stock pane 610 left or right in order to viewother hidden or partially-displayed stocks. In some cases, the user mayselect any one of the individual stock tickers by touching the ticker(e.g., one of stock tickers 617-619). Responsive to the user'sselection, the notification module can open a stock widget. The stockwidget can be contextually based on the selected stock ticker (e.g., thestock widget can display detailed stock information corresponding to theselected corporation).

A user may select (e.g., touch) any pane in notification center 602 toaccess the application associated with the pane. For example, responsiveto the user selecting social network pane 612, the notification modulecan provide the social network application to the user.

Each of panes 608-614 can be associated with an option for allowing auser to manually clear out notifications from the pane. For example,button 616 can allow a user to clear notifications out of notificationcenter 602 for pane 612. In particular, responsive to a user selectingbutton 616, the notification module can display a “CLEAR” button (e.g.,button 616 can roll over, expand, and/or transition into a “CLEAR”button). If the user then selects the “CLEAR” button, the user canmanually remove one or more notifications from notification center 602.

In some cases, button 616 can allow a user to clear out all of thenotifications in a particular pane (or application). As a result, thecorresponding pane can be removed from notification center 602. However,once a new notification is received for that application, a panecorresponding to the application can again be displayed in notificationcenter 602. Persons skilled in the art will appreciate that althoughnotifications have been cleared from notifications center 602, thesenotifications may still be accessible from the applications thatgenerated the notifications. Thus, if the user desires to viewnotifications that have been cleared from notifications center 602, hemay view those notifications by accessing the correspondingapplications.

Some panes, such as panes 612 and 614 can have an associated listing ofone or more notifications. For example, social network pane 612 haslisting 613 showing one notification, and email pane 614 shows listing615 showing two email notifications. Any suitable number ofnotifications can listed as part of the associated listing. Eachdisplayed notification can be selected, and upon selection, thatnotification is opened up in the application corresponding to itsassociated pane. For example, if the user selects the first emailnotification in listing 615, that email is opened for viewing in themail application.

Panes that have an associated listing may be vertically scrollable(e.g., a user can scroll from one pane to the next to view the listingsassociated with each). Such panes are in contrast with panes 608 and610, which are horizontally scrollable. A user can scroll from listingassociated pane to listing associated pane while panes such as panes 608and 610 remain in place. Thus, at any given moment, the user can scrollhorizontally in panes 608 and 610, or scroll vertically through listingassociated panes.

Referring now to FIG. 6C, display screen 620 shows notification center602, which can include calendar pane 622. Calendar pane 622 can displaya listing of notifications (e.g., upcoming events) in a user's calendarfor a pre-determined time period (e.g., for the upcoming 24 hours). Insome cases, calendar pane 622 can organize the upcoming events inchronological order. For example, the most recently upcoming event canbe displayed at the top of the listing of notifications, followed by thenext upcoming event, and so forth. Alternatively, the most recentlyupcoming event can be displayed at the bottom of the listing ofnotifications.

Calendar pane 622 can be adjusted in real-time while an event is inprogress. For example, as shown in FIG. 6C, notification 621 can includetext 623, which indicates that the event “Yoga” started 40 minutes ago.The notification module can continuously update text 623 while the eventis ongoing.

In some embodiments, a user can specify a pre-determined number ofnotifications to be displayed for each application. Consequently, if thenumber of notifications that can be displayed exceeds the pre-determinednumber of notifications, the notification module can automatically clearout notifications from calendar pane 622. Notification settings forspecifying a pre-determined number of notifications will be described inmore detail in connection with FIGS. 9E and 9F.

As shown in FIG. 6C, the pre-determined number of notifications may beset to five. Thus, upon receipt of a new notification, the notificationmodule can automatically remove a notification that is currently beingdisplayed in calendar pane 622. For example, turning now to FIG. 6D,upon receipt of new notification 626 from a calendar application, thenotification module can add new notification 626 to the top of calendarpane 622. However, because the number of notifications that can bedisplayed exceeds the pre-determined number of notifications, thenotification module can remove notification 628 from calendar pane 622.In some cases, notification 628 can be associated with an event that hasthe latest start time in comparison to the other events displayed incalendar pane 622. Eventually, once another notification has beencleared out of calendar pane 622 (e.g., notification 626 has completedor has been dismissed), notification 628 can be added back to calendarpane 622.

Once a calendar event has lapsed, one or more notificationscorresponding to the event can be automatically removed from calendarpane 622. For example, if the event “Yoga” lasts for an hour,notification 621 (FIG. 6C) corresponding to “Yoga” can be cleared out ofcalendar pane 622 once the event has completed. For instance, as shownin FIG. 6E, the notification module can automatically removenotification 621 from notification center 602 once the “Yoga” event haslapsed. In addition to removing notification 621, the notificationmodule can add new notification 632 to calendar pane 622.

Persons skilled in the art will appreciate that the panes included inFIGS. 6A-6E are merely illustrative. Thus, any suitable panes that areassociated with one or more applications on the device may be includedin notification center 602. In some cases, notification center 602 mayinclude those notifications that are displayed while a device isoperating in a locked state. These types of notifications will bedescribed in more detail in connection with FIGS. 8A-8F.

Referring now to FIGS. 6F-6H, several illustrative display screensshowing display of a notification center while a user is activelyparticipating in a third party application, such as a game. In FIG. 6F,display screen 640 shows an actively running third party applicationsuch as a game. While participating in the active third partyapplication, the user may access a notifications center in accordancewith an embodiment of the invention. The user may access thenotifications center by first, swiping a finger down from the top of thescreen to cause tab 654 to be displayed in screen 650 of FIG. 6G. Whentab 654 is displayed, the user may then place a finger on tab 654 anddrag it down to reveal notification center 662, as partially shown inscreen 660 of FIG. 6H. If the user drags tab 654 all the way down to thebottom of screen 660, notification center 662 will be fully shown.

In some embodiments, while an electronic device is operating in anunlocked state, the notification module can display one or more bannersthat can correspond to notifications received from differentapplications. The notification module can display a banner by, forexample, rotating the banner on to a display screen.

If the user has not selected the banner after a pre-determined period oftime has lapsed (e.g., 5 or 6 seconds), the notification module canremove the banner from the display screen. For instance, the banner canbe rotated out of the display screen. Alternatively, the user can pushthe banner away by swiping the banner or pushing the banner back.

In some embodiments, if two or more banners are received by thenotification module at approximately the same time, the banners can berotated into the display screen around the same time. That is, there maybe multiple banners concurrently rotating into the display screen.Alternatively, to minimize the distractions to a user, the notificationmodule can stagger the displaying of the banners such that only onebanner is provided at any given time.

Persons skilled in the art will appreciate that any suitable visualapproaches can be used for displaying banners. For example, banners canscroll across, flip up or drop down, or flutter into a display screen.Moreover, banners can be removed from the display screen in a similarfunction. The notification module may allow the user to specify themanner in which a banner can be displayed and/or removed.

In some cases, if a user ignores or removes a banner without accessingthe banner, the notification module can add the notification associatedwith the banner to a notification center (e.g., notification center 602of FIGS. 6A-6E). As a result, when the user later selects to view thenotification center, the notification center can provide the user withan accumulation of all of the notifications that have not yet beenaccessed by the user.

Turning now to FIGS. 7A-7E, display screens are shown of different typesof banners that can be displayed on an electronic device. Personsskilled in the art will appreciate that banners can be displayed at anysuitable time while the device is operating in an unlocked state (e.g.,while the device is displaying the home screen or displaying aparticular application). For example, banners can be displayed while auser is playing a video game, accessing a website, modifying systemsettings, watching a movie, and the like. Persons skilled in the artwill appreciate that although banners are displayed in FIGS. 7A-7E whilethe electronic device is operating in a portrait mode, banners can alsobe displayed while the electronic device is operating in a landscapemode. Persons skilled in the art will also appreciate that banners canbe displayed in any suitable portion of a display screen (e.g., right,left, top, or bottom). In addition, the notification module may allow auser to specify which portion of a display screen a banner may appear.

Referring first to FIG. 7A, display screen 700 is shown that can includebanner 702. Banner 702 can represent a notification that was recentlyreceived (e.g., a text message that was received from a user's contact).As shown in FIG. 7A, banner 702 can be displayed while a user is playinga video game.

Banner 702 can include icon 704, text 706, and media 708. Icon 704 canindicate the type of application that generated the notification. Text706 can include contact information and/or one or more portions of thetext message that was received. In some cases, text 706 may be atruncated version of the full text of the notification (e.g., text 706may include a portion of the body of a text or email). Media 708 can bean embedded media that is associated with the text message (e.g., aphoto of the contact or a media file that was attached to the textmessage).

In some embodiments, the notification module can detect when a user hasselected banner 702 (e.g., by touching banner 702). Responsive to theuser's selection, the notification module can present the associatednotification in the application that generated the notification. Forexample, in response to the user selecting banner 702, the notificationmodule can display the particular text message corresponding to banner702 in the text message application.

In some embodiments, a user may drag banner 702 down to view othernotifications that are also associated with the application.Alternatively, in response to the user dragging down banner 702, thenotification module can display the notification center. For example,the notification module can display the portion of the notificationcenter that includes the application panel associated with banner 702.As another example, the notification module can display the portion ofthe notification center centered about the text message itself.

Turning now to FIG. 7B, display screen 710 is shown that can includebanner 710. Banner 710 can include media 712, which can be a video thatwas attached to the notification. Persons skilled in the art willappreciate that media 712 can display any suitable media such as, forexample, an image, a video, a sound file, a map, an electronic businesscard, etc.

In addition, banner 710 can include text 713, which can indicate thatthe notification is associated with multiple images and videos but notwith any text. In particular, text 713 can indicate that there are twomore attachments in addition to media 712. Thus, text 713 may changebased on the number of attachments that are not displayed in banner 710.

FIG. 7C shows display screen 716, which can include banner 718. Banner718 can include map 720, which can be generated based on a notificationthat is associated with a map URL. For example, map 720 can be alocalized map of the immediate vicinity of the location associated withthe map URL. In addition, map 720 can include a pin that is mounted at aparticular location associated with the map URL (e.g., the location of arestaurant or a movie theater).

Turning now to FIG. 7D, display screen 722 is shown that includes banner724. Banner 724 can be a coalesced banner. That is, banner 724 caninclude information regarding multiple notifications that have beenqueued for a particular application. For example, as shown in FIG. 7D,banner 724 indicates that there are 7 new mail notifications for themail application.

The notification module can also generate coalesced banners using anyother approach. For example, the notification module can detect if twoor more notifications are associated with at least one common parameter(e.g., a particular subject matter). In response to detecting that thetwo or more notifications are associated with the at least one commonparameter, the notification module can append the two or morenotifications into a single message in a coalesced banner. As anotherexample, the notification module can condense (e.g., summarize) the twoor more notifications into a single message in a coalesced banner.

In some cases, the notification module can simultaneously displaymultiple coalesced banners (e.g., a grouping of banners), where eachbanner may display a single message. The banners can indicate that thereare new notifications queued for multiple applications.

A notification module can also provide banners based on the occurrenceof one or more trigger events (e.g., one or more time-based orlocation-based trigger events). For example, when the notificationmodule receives a notification that is associated with a time-basedtrigger event (e.g., a reminder to perform a task at a particular time),the notification module can display a banner associated with the eventat the start of the event or at a pre-defined time before the start ofthe event.

As another example, responsive to receiving a notification that isassociated with a location-based trigger event (e.g., a reminder to buymilk at the grocery store), the notification module can display a bannerassociated with the event when the electronic device is detected in thelocation of a grocery store. In some embodiments, these alarm bannerscan include a “SNOOZE” button, which can allow the user to stop thealarm for a pre-determined period of time.

Banners that are displayed on an electronic device can be unobtrusive.That is, banners may not interfere with a user's access to overlappingcontrols on a display screen. For example, referring now to FIG. 7E,display screen 726 is shown that can include banner 728. Banner 728 maybe overlaid over “NOTIFICATIONS” button 730. Because banner 728 is anunobtrusive banner, a user can still press “NOTIFICATIONS” button 730while banner is positioned on top of button 730. In some embodiments,one or more visual indicators can also be displayed, which can indicateto the user that “NOTIFICATIONS” button 730 continues to be selectabledespite the overlay of banner 728.

In some embodiments, the notification module can control the manner inwhich notifications are displayed while an electronic device isoperating in a locked state (e.g., when the electronic device is notbeing used). In particular, when the device is operating in a lockedstate, one or more notifications can be received from differentapplications. In particular, the electronic device may receive one ormore push events (e.g., phone calls, voicemails, e-mails, or athird-party push event) or device alerts (e.g., reminders or alarms).

Responsive to receiving a notification, the electronic device can wakeup (e.g., a processor can wake up the graphics module), and thenotification module can display the received notification on the displayscreen. In some cases, the notification can be displayed as alarge-format notification. Turning now to FIGS. 8A-8F, display screensare shown of different types of notifications that can be displayedwhile an electronic device is operating in a locked state.

Turning first to FIG. 8A, display screen 800 is shown that can includenotification 802. Notification 802 may be displayed after the electronicdevice receives a notification from a third-party application whileoperating in the locked state. In particular, notification 802 caninclude icon 804, which can indicate the application that generatednotification 802. In addition, notification 802 can include text 806,which can provide associated text or portions of text received from theapplication.

In response to viewing notification 802, a user may select to godirectly to the message associated with notification 802. For example,the user can access notification 802 by tapping and holding notification802. Responsive to the user's actions, the notification module candisplay (e.g., by animating notification 802) a slider on the displayscreen (e.g., by flipping notification 802 to a backside view). Forexample, referring now to FIG. 8B, display screen 808 can include slider810, which can be embedded as a component on a back side of notification802. A user may activate slider 810 by dragging slider button 812 in aparticular direction (e.g., to the right).

Once the notification module detects that slider 810 has been activated,the notification module can directly unlock the electronic device. Afterunlocking the device, the notification module can present to the userthe particular notification in the application that generated thenotification. In some cases, even if the electronic device has receivedmultiple notifications from a particular application, the notificationmodule can bypass other notifications, and present the particularnotification that the user has specifically requested.

Referring now to FIG. 8C, display screen 814 is shown, which can includenotification 816. Notification 816 may be displayed in response to animage text message that is received by the electronic device. Inparticular, notification 816 can include embedded image 818. Inaddition, notification 816 can include text 819, which can provide theidentity of the person who sent the text message. Furthermore,notification 816 can include text 820, which can be text accompanyingthe image. As shown in FIG. 8C, image 818 can be prominently displayedin notification 816 (e.g., image 818 can be enlarged relative to texts819 and 820).

Similar to FIGS. 8A and 8B, if the user selects to access notification816 (e.g., by tapping and holding notification 816), the notificationmodule can display a slider. If the user then activates the slider bydragging the slider, the notification module can unlock the device andprovide image 818 directly to the user (e.g., display image 818 in animage view of a chat application).

Persons skilled in the art will appreciate that the notification modulecan display any suitable type(s) of media in a notification. Forexample, a notification can include one or more sound(s), electronicbusiness card(s), video(s), and map URL(s) (e.g., the notificationmodule can display a map of the location of the URL). In addition,similar to coalesced banners, the notification module can displayinformation associated with multiple notifications that have been queuedfor a particular application in a single notification.

Moreover, notifications can be displayed in response to one or moretrigger events (e.g., time-based or location-based trigger events). Forexample, responsive to receiving a notification that is associated witha location-based trigger event, the notification module can display anotification associated with the event once the electronic device isdetected at the location of the trigger event.

As another example, when the notification module receives a notificationthat is associated with a time-based trigger event, the notificationmodule can display a notification associated with the event at the startof the event or at a pre-defined time before the start of the event. Forexample, turning now to FIG. 8D, display screen 822 is shown withnotification 824. Notification 824 can include text 826, which canindicate that notification 824 is displayed in response to a time-basedtrigger event (e.g., an alarm). In addition, text 826 can provide adescription of the alarm.

Notification 824 can further include “SNOOZE” button 828. In response tothe user selecting “SNOOZE” button 828, the notification module can stopthe alarm for a pre-determined period of time. As a result of thisfunction, the user is able to control an alarm without having to unlockthe electronic device.

Display screens 800 (FIG. 8A), 808 (FIG. 8B), 814 (FIG. 8C), and 822(FIG. 8D) can include pull-down option 830, which can be positionedabove a notification that is displayed. Persons skilled in the art willappreciate that although pull-down option 830 is shown in FIGS. 8A-8D asbeing above a notification, pull-down option 830 can be positioned inany suitable location in a display screen (e.g., left, right, or bottomof the display screen). In addition, if the electronic device is in asleep mode, a user may be able to view pull-down option 830 by pressinga button (e.g., an on/off and/or home button) on the electronic device.

Pull-down option 830 can allow a user to view previously receivednotifications (e.g., all of the notifications received while theelectronic device was operating in the locked state). A user can selectpull-down option 830 by dragging option 830 in a downward motion on thedisplay screen.

Referring now to FIG. 8E, display screen 832 shows list of notifications834, which can be a list of previously received notifications. Inparticular, when each notification of list of notifications 834 wasfirst received, the notification may have been displayed as alarge-format notification (e.g., as shown in FIGS. 8A-8D). However,because the user did not respond to the notification, the notificationwas then added to list of notifications 834 as an individual element. Insome embodiments, the first displayed instance of a notification inlocked mode can be larger than when the same notification is shown inlist of notifications 834. For instance, notifications 802 (FIG. 8B),816 (FIG. 8C), and 824 (FIG. 8D) can be larger than elements 835, 837,and 838, respectively. That is, elements 835, 837, and 838 can bedisplayed in a small format.

The individual elements of list of notifications 834 can be stacked ontop of each other. For example, the notification module can displaymultiple text messages received by the electronic device as individualelements in list of notifications 834.

In some embodiments, list of notifications 834 can be arranged based ona time that each notification was received (e.g., based on achronological order). That is, the most recently received notificationcan be appended to the top of list of notifications 834. Alternatively,the most recently received notification can be appended to the bottom oflist of notifications 834. As shown in FIG. 8E, for example, list ofnotifications 834 is arranged in a chronological order, with the mostrecent notification at the top of list 834.

In other embodiments, list of notifications 834 can be arranged based ona user-selected parameter. For example, a user can specify whichapplication's notifications should appear first, second, third, and soforth. Based on the user-selected parameter, the notification module cansort the received notifications. For example, notificationscorresponding to each application can be first grouped together, and theapplications can then be arranged in a pre-determined order. Forinstance, notifications corresponding to voicemails can be listed first,notifications corresponding to e-mails can be listed second, andnotifications corresponding to text messages can be listed third, etc. Auser's selection of the manner in which list of notifications 834 isarranged will be described in more detail in connection with FIG. 9B.

List of notifications 834 can be scrollable. In particular, region 836of display screen 832 can be made scrollable, such that list ofnotifications 834 can move up or down when the user either swipes ordrags a portion of region 830. As a result, list of notifications 834can be capable of displaying a large number of notifications (e.g., allof the notifications that have been received while a device is operatingin a locked state). In some embodiments, list of notifications can beautomatically displayed regardless of whether pull-down option 830 wasdisplayed and manipulated by a user.

In addition, each notification in list of notifications 834 can beindividually accessible. For example, each notification can beassociated with its own slider. Similar to the discussion above, a usermay select to access a notification in list of notifications 834 bytapping and holding the notification. For example, the user can tap andhold notification 838, and responsive to the user's actions, thenotification can display a slider in list of notification 834 (e.g., byflipping notification 838 to a backside view).

Turning now to FIG. 8F, display screen 840 shows listing ofnotifications 834 with a backside view of notification 838. Inparticular, notification 838 can include slider 842. Similar to slider810 (FIG. 8B), slider 842 can be an embedded component in notification838. A user can activate slider 842 by dragging slider button 844 in onedirection (e.g., to the right of display screen 840).

Once the user actives slider 842, the notification module can detectthat slider 844 has been activated, and the module can unlock theelectronic device. After unlocking the device, the notification modulecan present the particular notification in the application thatgenerated the notification.

In some embodiments, the user may select to unlock the device. Forexample, the user may select to unlock the device by pressing a button(e.g., an on/off and/or a home button) or sliding “UNLOCK” slider 846.Responsive to the user's actions, the notification module can display anotification center on the display screen (e.g., similar to notificationcenter 602 of FIGS. 6A-6E). In other embodiments, in response to theuser unlocking the device, the notification module may not display thenotification center until the user specifically invokes the notificationcenter. In some embodiments, “UNLOCK” slider 846 (or other user inputunlocking region) can include context sensitive text that changes basedon when a notification is received. For example, if an email is receivedand displayed in the list of notifications 834, the text state “slide toread.” As another example, if a reminder notification is received, thetext may state “slide to view.”

In some cases, the notification module may allow a user to specify aprivacy setting. Thus, if the user selects to turn on the privacysetting, one or more notifications or types of notifications (e.g.,notifications associated with text messages) received when theelectronic device is in a locked state are not displayed while thedevice remains in that state. Then, once the user selects to unlock thedevice, the notification module can display the received notificationsin one or more banners (e.g., similar to banners of FIGS. 7A-7E).

As discussed previously, because users may have different preferencesfor how they would like notifications to be displayed, the electronicdevice can allow users to customize notification settings. Inparticular, a user may be able to customize notification settings forthe locked (e.g., notifications) and unlocked states (e.g., thenotification center and banners).

Referring back to FIG. 5, display screen 500 can include “SETTINGS”option 504. In particular, the user may select “SETTINGS” option 504 tochange one or more settings of the electronic device. Thus, responsiveto the user selecting “SETTINGS” option 504, the electronic device canprovide display screens allowing the user to change system settings. Forexample, turning now to FIGS. 9A-9F, display screens associated withcustomizing notification settings are shown.

Referring first to FIG. 9A, display screen 900 is shown to include listof settings 902, which can be displayed after the user selects“SETTINGS” option 504 (FIG. 5). List of settings 902 can include“NOTIFICATIONS” option 904. A user may select “NOTIFICATIONS” option 904to access and modify one or more notification settings (e.g., by tappingon “NOTIFICATIONS” option 904).

in response to detecting that the user has selected “NOTIFICATIONS”option 904, the electronic device can provide one or more notificationsettings on a display screen. These notification settings can allow auser to change one or more banner options or notification center options(e.g., when an electronic device is in an unlocked state) or one or morenotification options (e.g., when an electronic device is in a lockedstate). For example, referring next to FIG. 9B, display screen 906 isshown, which can include multiple notification settings.

For example, display screen 906 can include manual sorting option 908and automatic sorting option 910. Sorting options 908 and 910 areuser-selected parameters that can specify the order in whichnotifications are displayed in one or more contexts such as, forexample, in a list of notifications (e.g., list of notifications 834 ofFIGS. 8E and 8F).

If a user selects sorting option 908, a notification module (e.g.,notification module 238 of FIG. 2) can allow the user (e.g., provideoptions to the user) to manually specify the order in whichnotifications are displayed in a list of notifications. That is, theuser can specify which application's notifications should appear first,second, and so forth. Based on the user's selection of sorting option906, the notification module can sort the received notifications basedon the user-specified order.

In some embodiments, the order in which the applications are sorted cancorrespond to the order in which applications are listed in the “InNotification Center” group 911. In other embodiments, the electronicdevice can display a different display screen (not shown) that can allowthe user to specify the order in which the applications are to besorted.

Once the notification module has sorted notifications in groups based oncorresponding applications, the notification can assign a pre-determinedorder for each group. For example, for each group, the notificationmodule can arrange the associated notifications based on the time ofreceipt of each notification (e.g., based on a chronological order).Persons skilled in the art will appreciate that any other pre-determinedorder can be used instead.

In contrast, if a user selects sorting option 910, the notificationmodule can assign a pre-determined order for displaying notifications inthe list of notifications. In particular, the notification module canarrange the received notifications based on the time of receipt of eachnotification (e.g., based on a chronological order). That is, the mostrecently received notification can be appended to the top (or bottom) ofa list of notifications. If a newer notification is received, the topnotification can be pushed down in the list of notifications.

Display screen 906 can also include options 912, which can allow a userto specify which applications to display in a notification center (e.g.,notification center 602 of FIGS. 6A-6E). As shown in display screen 906,options 912 can include multiple interactive lists (e.g., “InNotification Center” group 911 and “Not in Notification Center” group913). Notifications for applications that are included in the “InNotification Center” group 911 are displayed in the notification center.By contrast, notifications for applications that are included in the“Not in Notification Center” group 913 are excluded from thenotification center.

A user may specify which applications to include in the notificationcenter using any suitable approach. For example, the user can manuallyadjust options 912 by selecting “EDIT” option 914. In response to theuser selecting “EDIT” option 914, the electronic device can provide adisplay screen that allows the user to manually move applications in andout of groups 911 and 913.

Turning now to FIG. 9C, display screen 920 can be shown in response tothe user's selection of “EDIT” option 914 (FIG. 9B). As shown in displayscreen 920, the user can move each of the options 912 in or out of “InNotification Center” group 911 and “Not in Notification Center” group913. For example, the user can tap and drag option 922 from the “Not inNotification Center” group 913 to the “In Notification Center” group911.

FIG. 9D shows display screen 924, which can be displayed after option922 has been moved to the bottom of the “In Notification Center” group911. In some cases, the order in which the applications are arranged inthe “In Notification Center” group 911 can dictate the order in whichapplication panes will be displayed in the notification center. Forinstance, based on “In Notification Center” group 911 of FIG. 9D, thenotification center can include a weather panel on top, followed by amail panel, and so forth. Accordingly, the user may adjust the order inwhich application panes are displayed in the notification center bymoving each of options 922, 926, 928, or 930 up or down (e.g., bytapping and dragging each option).

Once the user has finished editing the applications to be displayed in anotification center, the user may select “DONE” option 932. After theuser's selection, the electronic device can return to a display screensimilar to display screen 906 of FIG. 9B.

As another example, the user may specify which applications are to bedisplayed in a notification center by tapping on an option in options912. For example, referring to FIG. 9B, the user can select “MAIL”option 916. In response to the user's selection, the electronic devicecan provide a detailed view of display options for the “MAIL”application.

Turning now to FIG. 9E, display screen 940 can provide a detailed viewof display options for the “MAIL” application. Display screen 940 caninclude switch 941, which can allow a user to specify whether to includenotifications received from the “MAIL” application in the notificationcenter. In particular, if the user sets switch 941 to “ON”,notifications received from the “MAIL” application will be displayed inthe notification center. If the user instead sets switch 941 to “OFF”,notifications received from the “MAIL” application will not be displayedin the notification center.

If notifications from an application have been selected to be includedin the notification center, the user may specify a pre-determined numberof notifications to be displayed for that application by selecting“SHOW” option 942.

Referring now to FIG. 9F, the electronic device can provide displayscreen 950, which can be displayed in response to the user selecting“SHOW” option 942. Display screen 950 can include list of options 952,in which each option of the list can allow a user to specify a differentnumber of notifications to be displayed for an application in thenotification center (e.g., one, five, or ten notifications). Forexample, in response to the user selecting option 954, the applicationpane corresponding to the mail application (e.g., application pane 614of FIG. 6B) can display a maximum of ten notifications. In some cases,based on the frequency of updates, the pre-determined number ofnotifications may be set to a higher number for some applications (e.g.,an e-mail or social network application), and may be set to a lowernumber for other applications (e.g., a weather application).

Persons skilled in the art will appreciate that options provided in listof options 952 are merely illustrative. In particular, the electronicdevice can alternatively provide one or more options that allow the userto specify any pre-determined number of notifications (e.g., one, five,ten, twenty or more items, and so on).

Based on the pre-determined number of notifications, a notificationmodule can automatically clear out notifications from an applicationpane when the number of notifications that can be displayed exceeds thepre-determined number (e.g., as shown in FIGS. 6C and 6D). Because thenotification module can automatically remove one or more notificationsthat exceed the pre-determined number of notifications, the notificationmodule is able to provide a concise presentation of notifications in thenotification center. Moreover, this approach is convenient for usersbecause users do not have to clear notifications out of the notificationcenter (by, for example, selecting button 616 of FIG. 6B).

Referring back to FIG. 9E, display screen 940 can further include option943, which can allow a user to select whether to display notificationsassociated with the application while an electronic device is operatingin the locked state (e.g., in the display screens of FIGS. 8A-8F). Insome embodiments, user can opt-in to option 943. That is, option 943 canhave a default state of “OFF”, such that notifications that are receivedwhile the device is in the locked state are not displayed until thedevice is switched to the unlocked state.

This setting can be advantageous because it allows a user to customizethe display of notifications based on privacy concerns. For example, theuser may not want new e-mail messages to appear on the display screenwhile the device is operating in the locked state. Once the user unlocksthe device, however, the user may want to be able to see the receivede-mail messages by invoking the notification center or through one ormore banners. If, however, the user selects to set option 943 to “ON”,the notification module can immediately display new notificationsreceived while the device is in the locked state.

Options 944 can allow a user to specify how notifications are to bedisplayed while an electronic device is operating in an unlocked state.For example, options 944 can include “NONE” option 945, “BANNERS” option946, and “ALERTS” option 947.

In response to the user selecting “NONE” option 945, the notificationmodule can suppress visual notifications for a particular application.However, the notifications can still be displayed in a notificationcenter. Alternatively, in response to the user selecting “BANNERS”option 946, the notification module can display received notificationsas one or more banners on the display screen (e.g., banners shown inFIGS. 7A-7E). The user may, for example, select “BANNERS” option 946 ifa particular application transmits important but frequently generatednotifications.

In response to the user selecting “ALERTS” option 947, the notificationmodule can display received notifications as messages that require auser's response (e.g., the user is required to select a “DISMISS” optionor a “VIEW” option depending on the type of application).

Display screen 940 can also include “BADGE APP ICON” option 948, whichcan indicate whether to display a picture of the application in a bannercorresponding to a notification that is received. For example, if “BADGEAPP ICON” option 948 is set to “ON”, the notification module can displayan icon representing the application that generated the notification(e.g., icon 704 of FIG. 7A). If “BADGE APP ICON” option 948 is insteadset to “OFF”, the notification module will not display icons in thebanners corresponding to the application. Persons skilled in the artwill appreciate that in addition to or instead of a picture of theapplication, “BADGE APP ICON” can enable the notification module to addany other visual embellishments to a banner.

“SOUNDS” option 949 can indicate whether to enable sounds upon receiptof a notification for the application. If “SOUNDS” option 949 is set to“OFF”, no sounds will be played when a notification is received for theapplication. If “SOUNDS” option 949 is instead set to “ON”, thenotification can play audio alerts when a new notification of theapplication is received. As a result, even if “NONE” option 945 isselected for a particular application (e.g., there are no visualnotifications), the user may still hear audio alerts when newnotifications are received for that application. As a result of hearingthe audio alerts, a user may later choose to invoke the notificationcenter in order to access the notifications. Persons skilled in the artwill appreciate that the notification settings discussed in FIGS. 9A-9Fare merely illustrative, and that any other suitable notificationsettings can be made customizable.

As discussed previously, a notification module can be implemented on anysuitable electronic device. For example, the notification module can beimplemented on an electronic device with a large display and/or touchscreen (e.g., touch I/O device 212 of FIG. 2). In such embodiments, thenotification center may not fill the entire screen as it does on asmaller device.

For instance, turning now to FIGS. 10A-10C, display screens are shownfor an electronic device with a large display. Referring first to FIG.10A, display screen 1000 shows that notification center 1002 does notfill the entirety of display screen 1000.

Furthermore, for a device with a large display, the notification modulemay display a visual indication when the notification center does notinclude any new notifications. For example, as shown in display screen1004 of FIG. 10B, the notification module can indicate that notificationcenter 1002 currently contains no new notifications. Persons skilled inthe art will appreciate that such an indication can also be provided onan electronic device with a smaller display.

Referring now to FIG. 10C, display screen 1006 shows the type ofnotifications that may be displayed when an electronic device with alarge screen is in both a locked state and a landscape mode. Thus, incontrast to FIGS. 8A-8F, new notifications that are received are notfirst displayed as large individual notifications on the display screen.Rather, the new notifications are displayed in scrollable list ofnotifications 1008. Consequently, there may be no need for thenotification module to display a pull-down option such as pull-downoption 830 of FIGS. 8A-8D. Persons skilled in the art will appreciatethat list of notifications 1008 can be displayed in a similar mannerwhen the device is in a portrait mode.

Persons skilled in the art will also appreciate that each of thenotifications in list of notifications 1008 can exhibit similarcharacteristics as the notifications in list of notifications 834 (FIGS.8E and 8F). In addition, persons skilled in the art will appreciate thatthe display screens shown in FIGS. 10A-10C are merely one embodiment ofthe notification center. Thus, a notification module implemented on anelectronic device with a large display can display notifications in anysuitable manner (e.g., similar to the manner in which notifications areprovided in FIGS. 6A-6E, FIGS. 7A-7E, FIGS. 8A-8F, and FIGS. 9A-9F).

Turning now to FIGS. 11-14, flowcharts of illustrative processes areshown in accordance with various embodiments of the invention. Theseprocesses may be executed by one or more components of an electronicdevice (e.g., device 100 of FIG. 1 or system 200 of FIG. 2). Forexample, at least some of the steps in the processes of FIGS. 11-14 maybe performed by a notification module (e.g., notification module 238 ofFIG. 2). In addition, persons skilled in the art will appreciate thatsome of the steps may be performed in conjunction with a touchprocessing module (e.g., touch processing module 226 of FIG. 2) and/or agraphics module (e.g., graphics module 228 of FIG. 2).

Turning first to FIG. 11, process 1100 is shown for displaying apull-down option in response to receiving multiple notifications.Process 1100 may begin at step 1102, and, at step 1104, the notificationmodule can receive a plurality of notifications from at least oneapplication.

Then, at step 1106, the notification module can detect that theelectronic device is operating in a locked state. Continuing to step1108, the notification module can provide a pull-down option (e.g.,pull-down option 830 of FIGS. 8A-8D) associated with the plurality ofnotifications. In addition, the notification module can also provide anotification on a display screen (e.g., notification 802 of FIGS. 8A and8B, notification 816 of FIG. 8C, or notification 824 of FIG. 8D), wherethe displayed notification can be the one that was most recentlyreceived.

After providing the pull-down option, process 1100 may move to step1110. At step 1110, the notification module can determine that a userhas selected the pull-down option. Then, at step 1112, the notificationmodule can provide a list of the plurality of notifications to the user(e.g., list of notifications 834 of FIGS. 8E and 8F). Process 1100 maythen end at step 1114.

Turning now to FIG. 12, process 1200 is shown for displaying anotification center. Process 1200 may begin at step 1202, and, at step1204, the notification module can receive a plurality of notifications,where the plurality of notifications can include at least one of apush-based notification (e.g., a notification from a non-third party orthird party application) and a trigger-based notification (e.g., analarm or a reminder).

Then, at step 1206, the notification module can detect that anelectronic device is in an unlocked state. After detecting that thedevice is in the unlocked state, process 1200 may move to step 1208.

At step 1208, the notification module can detect that a user hasselected to access a notification center. For example, the notificationmodule can detect that the user has performed a gross swipe gesture(e.g., by quickly flicking one or more fingers in a downward motion fromthe top of a display screen). As another example, the notificationmodule can detect that the user has slowly dragged one or more fingersdownwards from the top of display screen.

Continuing to step 1210, the notification module can display thenotification center, where the notification center can include aplurality of panes associated with the plurality of notifications (e.g.,panes 608-614 of FIG. 6B). Process 1200 may then end at step 1212.

Referring now to FIG. 13, a flowchart of illustrative process 1300 isshown for providing a banner. Process 1300 may begin at step 1302, and,at step 1304, the notification module can receive a notification from atleast one application. At step 1306, the notification module can detectthat an electronic device is in an unlocked state.

Continuing to step 1308, the notification module can provide a bannerassociated with the notification, where the banner allows a user toaccess at least one control overlapping with the banner. For example, asshown in FIG. 7E, the notification module can provide banner 728 thatoverlaps with “NOTIFICATIONS” button 730. However, the notificationmodule can nonetheless allow a user to access “NOTIFICATIONS” button730. After providing the banner, process 1300 may end at step 1310.

Referring now to FIG. 14, a flowchart of illustrative process 1400 isshown for providing notification settings. Process 1400 may begin atstep 1402, and, at step 1404, the notification module can provide anoption to modify settings for device notifications (e.g.,“NOTIFICATIONS” option 904 of FIG. 9A). Then, at step 1406, thenotification module can detect that a user has selected the option.

Continuing to step 1408, the notification module can provide a pluralityof notification settings, where the plurality of notification settingscan include options associated with one or more of an order ofnotifications option (e.g., options 912 of FIG. 9B), a number ofnotifications option (e.g., list of options 952 of FIG. 9F), and alertstyle options (e.g., alert style options 944 of FIG. 9E). Process 1400may then end at step 1410.

It should be understood that processes 1100, 1200, 1300, and 1400 ofFIGS. 11-14 are merely illustrative. Any of the steps may be removed,modified, or combined, and any additional steps may be added, withoutdeparting from the scope of the invention.

The described embodiments of the invention are presented for the purposeof illustration and not of limitation.

1. A data processing system, comprising: a processor to execute instructions; a touch processing module; and a memory coupled with the processor to store instructions, which when executed by the processor, cause the processor to interface a notification module of the data processing system with an application programming interface (“API”) calling component and operative to: receive a plurality of notifications from at least one application; detect that the electronic device is operating in a locked state; provide a pull-down option associated with the plurality of notifications; detect whether a user has selected the pull-down option using the touch processing module; and in response to detecting that the user has selected the pull-down option, provide a list of the plurality of notifications to the user.
 2. The data processing system of claim 1, wherein the list of the plurality of notifications comprises all notifications received while the electronic device is operating in the locked state.
 3. The data processing system of claim 1, wherein the list of the plurality of notifications is arranged based on a time that each of the plurality of notification was received.
 4. The data processing system of claim 1, wherein the processor is further operative to sort the list of the plurality of notifications based on a user selected parameter.
 5. The data processing system of claim 1, wherein the list of the plurality of notifications is scrollable.
 6. The data processing system of claim 1, wherein the processor is further operative to: detect whether a user has selected to access a notification from the list of the plurality of notifications using the touch processing module; and in response to detecting that a user has selected to access the notification, display a slider associated with an application that generated the notification.
 7. The data processing system of claim 6, wherein the processor is further operative: detect that a user has activated the slider; unlock the electronic device; and present, to the user, the notification in the application that generated the notification.
 8. A method for displaying notifications when an electronic device is in a locked state, the method comprising: receiving a plurality of notifications from at least one application; detecting that the electronic device is operating in the locked state; displaying a list of the plurality of notifications; enabling a user to browse the displayed list while the electronic device is operating in the locked state.
 9. The method of claim 8, wherein enabling the user to browse the displayed list comprises receiving a user input to move the displayed list up or down to cause additional received notifications to be displayed.
 10. The method of claim 8, wherein each displayed notification comprises a representative graphic and text.
 11. The method of claim 8, wherein the list of the plurality of notifications is arranged based on a time that each of the plurality of notification was received.
 12. The method of claim 8, further comprising: receiving a user command to unlock the electronic device; relocking the electronic device; and after the electronic device re-enters the locked state, ceasing to display the list of received notification that were displayed prior to unlocking the electronic device.
 13. The method of claim 8, further comprising displaying an user input unlocking region, the user input unlocking region comprising text.
 14. The method of claim 13, wherein the text of the user input unlocking region is context sensitive based on a received notification.
 15. The method of claim 8, wherein the locked state is a state that limits user interaction with the electronic device.
 16. A machine-readable storage medium that provides instructions that, if executed by a processor, will cause the processor to generate an application programming interface (“API”) that allows an API-implementing component to perform operations, the operations comprising: receiving a plurality of notifications, wherein the plurality of notifications comprise at least one of a push-based notification and a trigger-based notification; detecting that an electronic device is in an unlocked state; detecting that a user has selected to access a notification center; and displaying the notification center, wherein the notification center comprises a plurality of panes associated with the plurality of notifications.
 17. The machine-readable storage medium of claim 16, wherein the operations further comprises pulling down the notification center to the bottom of a display.
 18. The machine-readable storage medium of claim 16, wherein the detecting that the user has selected to access the notification center further comprises detecting that the user has flicked or dragged at least one finger from the top of the display.
 19. The machine-readable storage medium of claim 16, wherein the operations further comprises providing an option for each pane of the plurality of panes, wherein the option allows the user to manually clear at least one notification out of the pane.
 20. The machine-readable storage medium of claim 16, wherein the operations further comprises: providing an option to modify settings for the notification center; detecting that a user has selected the option; and providing a plurality of notification settings.
 21. The machine-readable storage medium of claim 16, wherein the operations further comprises providing for automatic removal of at least one notification from the notification center after a calendar event corresponding to the at least one notification has lapsed.
 22. The machine-readable storage medium of claim 16, wherein the operations further comprises: detecting a user selection of one of displayed panes; and opening an application associated with the user selected pane.
 23. A method for displaying a notifications center in an unlocked electronic device, the method comprising: receiving a plurality of notifications; detecting that a user has selected to access a notification center; displaying the notification center, wherein the notification center comprises at least one horizontally scrollable pane and at least one vertically scrollable pane, wherein the at least one vertically scrollable pane includes an associated listing of at least one notification.
 24. The method of claim 23, wherein the at least one horizontally scrollable pane comprises automatically scrolling assets.
 25. The method of claim 23, further comprising: receiving user input on the at least one horizontally scrollable pane, the received user input controlling a horizontal scrolling of content displayed therein.
 26. The method of claim 23, wherein each pane is associated with a particular application.
 27. The method of claim 23, wherein the associated listing of the at least one notification of each vertically scrollable pane is contiguous.
 28. The method of claim 23, wherein each notification within a particular vertically scrollable pane is ordered based on the time it was received.
 29. The method of claim 23, wherein an order in which each of the each of the at least one vertically scrollable panes is based on a user preference.
 30. A data processing system, comprising: a processor to execute instructions; a touch processing module; and a memory coupled with the processor to store instructions, which when executed by the processor, cause the processor to interface a notification module of the data processing system with an application programming interface (“API”) calling component and operative to: receive a plurality of notifications; detect that a user has selected to access a notification center; display the notification center, wherein the notification center comprises at least one horizontally scrollable pane and at least one vertically scrollable pane, wherein the at least one vertically scrollable pane includes an associated listing of at least one notification.
 31. The method of claim 30, wherein the at least one horizontally scrollable pane comprises automatically scrolling assets.
 32. The method of claim 30, further comprising: receiving user input on the at least one horizontally scrollable pane, the received user input controlling a horizontal scrolling of content displayed therein.
 33. The method of claim 30, wherein each pane is associated with a particular application.
 34. The method of claim 30, wherein the associated listing of the at least one notification of each vertically scrollable pane is contiguous.
 35. The method of claim 30, wherein each notification within a particular vertically scrollable pane is ordered based on the time it was received.
 36. The method of claim 30, wherein an order in which each of the each of the at least one vertically scrollable panes is based on a user preference. 37.-88. (canceled) 